package main

import (
	"log"
	"strconv"

	"go-admin1/internal/config"
	"go-admin1/internal/infrastructure/cache"
	"go-admin1/internal/infrastructure/database"
	"go-admin1/internal/infrastructure/logger"
	"go-admin1/internal/infrastructure/router"
)

func main() {
	// 初始化配置
	if err := config.Load(); err != nil {
		log.Fatal("加载配置失败:", err)
	}

	// 初始化日志
	logger.Init()

	// 初始化数据库
	if err := database.Init(); err != nil {
		log.Fatal("数据库初始化失败:", err)
	}

	// 初始化Redis
	if err := cache.Init(); err != nil {
		log.Fatal("Redis初始化失败:", err)
	}

	// 自动迁移数据库表
	// db := database.GetDB()
	// db.AutoMigrate(&model.User{})

	// 设置路由
	r := router.SetupRouter()

	// 启动服务
	serverConfig := config.Get().Server
	port := serverConfig.Port
	if port == 0 {
		port = 8080
	}

	log.Printf("服务启动在端口 %d", port)
	if err := r.Run(":" + strconv.Itoa(port)); err != nil {
		log.Fatal("服务启动失败:", err)
	}
}
